Serial attached storage protocols, such as Fibre Channel, serial Advanced Technology Attachment (ATA) (SATA) and serial attached Small Computer System Interface (SCSI) (SAS) are becoming more prevalent for connecting storage devices to a computer system. In computer systems implementing such serial storage devices, one storage device in the system may communicate with others. For example, a device requesting data (referred to as the initiator device) may receive data from a target device.
Typically, communications between the devices may occur after an identification sequence and the establishing of connections between the devices. Connection establishments, input/output (I/O) transfers and terminations are typically performed by a connection manager within the initiator device.
In SAS, each established connection is regularly closed to allow fairness in resource allocation. The simplest implementation of connection management in a SAS controller manifestation would be to create a new connection for each frame to be transmitted. However, such a scheme ignores system state parameters. Moreover, this connection management scheme is not optimal in multiple initiator scenarios even though it conforms to SAS. For instance, there is constant waste in resources in terms of connection open-close overheads, especially when a time slot is granted but the connection fails because the pathway is blocked downstream.